package org.tankwar.view;

import javax.swing.*;
import java.awt.*;

/**
 * 主窗口类，其他的界面以面板的形式放入主窗口
 */
public class MainFrame extends JFrame {
    public static final int Frame_width = 800; // 静态全局窗口大小
    public static final int Frame_length = 690;
    public MainFrame() {
        setGamePanel(new GamePanel(this));
        init();
    }

    /**
     * 初始化窗口
     */
    private void init() {
        this.setSize(Frame_width, Frame_length); // 设置界面大小
        // this.setLocation(280, 50); // 设置界面出现的位置
        setLocationRelativeTo(null);// 让窗体居中
        this.setTitle("坦克大战——(重新开始：R键  开火：F键)                 ");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false); // 设置窗口大小不可改变
        this.setBackground(Color.GREEN); // 设置背景颜色
        this.setVisible(true); // 设置窗口可见
        setFocusable(true);
    }

    /**
     * 把游戏面板之外的面板加入到主窗口，例如登录面板、
     * @param jPanel 面板
     */
    public void setPanel(JPanel jPanel) {
        Container contentPane = getContentPane();
        contentPane.removeAll();
        contentPane.add(jPanel);
        contentPane.validate();
    }

    /**
     * 向主窗口放入游戏面板，并把原来的组件清除
     * @param gamePanel 游戏面板
     */
    public void setGamePanel(GamePanel gamePanel) {
        //this.setJMenuBar(gamePanel.jmb);
        Container contentPane = getContentPane();
        contentPane.removeAll(); // 删除该窗口的内容窗格原来的所有组件
        // 用东西南北中的布局
        contentPane.setLayout(new BorderLayout());
        contentPane.add(gamePanel.jmb, BorderLayout.NORTH);
        contentPane.add(gamePanel, BorderLayout.CENTER);
        contentPane.validate();
    }
}
